#include "quesion20.h"
#include <unordered_map>
#include <stack>

bool quesion20::isValid(string s)
{
    unordered_map<char,int> m={
      {'(',1},{'[',2},{'{',3},
      {')',-1},{']',-2},{'}',-3}
    };
    bool istrue=true;
    stack<char> st;
    for(char c:s){
        int value=m[c];
        if(value>=1&&value<=3){
            st.push(c);
        }
        else if(!st.empty()&&m[st.top()]==-value){
            st.pop();
        }
        else{
            istrue=false;
            break;
        }
    }
    if(!st.empty()){
        istrue=false;
    }
    return istrue;
}
